/*
 * Copyright (c) 2021. Moses All Right Reserved
 */

package com.moses.enums;

/**
 * @author Moses
 * @email shenhuohui@gmail.com
 * @date 2021/5/23 17:50
 */
public enum AdvanceWeek{
    // 1. 一定要在前面，且需要和构造函数对应
    // 2. 每一个都是 public static final
    SUNDAY("星期天"){
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    MONDAY("星期一"){
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    TUESDAY("星期二") {
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    WEDNESDAY("星期三") {
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    THURSDAY("星期四") {
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    FRIDAY("星期五") {
        @Override
        public String absMethod() {
            return getDescription();
        }
    },
    SATURDAY("星期六") {
        @Override
        public String absMethod() {
            return getDescription();
        }
    }; // 这里有个分号

    // 像类一样定义 enum

    private String description;
    // 这里不可以加除了 private 权限修饰符，其他不可
    // 即只能在内部使用构造函数
    private AdvanceWeek(String description){
        this.description = description;
    }

    //  如果枚举类具有抽象方法，则枚举类的每个实例都必须实现它，
    //  奇葩设计，有什么作用？
    public abstract String absMethod();

    // enum 方法
    public String getDescription() {
        return description;
    }
}
